Spring ORM এ Lazy এবং Eager Loading এর কনফিগারেশন

Java Technologies - স্প্রিং ওআরএম (Spring ORM) Hibernate এর Lazy Loading এবং Eager Loading |
59
59

Lazy Loading এবং Eager Loading হল ORM (Object-Relational Mapping) ফ্রেমওয়ার্ক যেমন Hibernate বা JPA-তে ডাটাবেজ থেকে ডাটা রিট্রিভ করার দুটি ভিন্ন স্ট্র্যাটেজি। এগুলি ডাটা লোড করার সময় পারফরম্যান্স অপ্টিমাইজ করার জন্য ব্যবহৃত হয়। Spring ORM এর মাধ্যমে Hibernate বা JPA-তে এগুলিকে সহজেই কনফিগার করা যায়।


Lazy Loading এবং Eager Loading এর ধারণা

Lazy Loading

  • ডাটা তখনই লোড হয়, যখন এটি প্রথমবার অ্যাক্সেস করা হয়।
  • এই পদ্ধতিতে মেমরি ব্যবহার কম হয় এবং অ্যাপ্লিকেশনের পারফরম্যান্স বৃদ্ধি পায়।
  • এটি বড় ডেটাসেটের ক্ষেত্রে উপযোগী।

Eager Loading

  • ডাটা অবজেক্ট তৈরি করার সময়ই ডাটাবেজ থেকে সমস্ত প্রাসঙ্গিক ডাটা লোড হয়।
  • এটি সেই পরিস্থিতিতে কার্যকর যেখানে ডাটা আগে থেকেই প্রয়োজন হবে।

Spring ORM এ Lazy এবং Eager Loading কনফিগার করার পদ্ধতি

@OneToMany এবং @ManyToOne Mapping এর জন্য কনফিগারেশন

Hibernate বা JPA-তে @OneToMany, @ManyToOne, @OneToOne, এবং @ManyToMany রিলেশনশিপে Lazy এবং Eager Loading নির্ধারণ করা যায়।

উদাহরণ: Lazy Loading

import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.OneToMany;
import java.util.List;

@Entity
public class Department {

    @Id
    private int id;

    private String name;

    @OneToMany(mappedBy = "department", fetch = jakarta.persistence.FetchType.LAZY)
    private List<Employee> employees;

    // Getter এবং Setter
}

উপরের উদাহরণে, fetch = FetchType.LAZY এর মাধ্যমে employees তালিকা Lazy Loading হিসাবে কনফিগার করা হয়েছে। এর অর্থ, employees অবজেক্ট ডাটাবেজ থেকে তখনই রিট্রিভ হবে, যখন এটি অ্যাক্সেস করা হবে।


উদাহরণ: Eager Loading

import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.OneToMany;
import java.util.List;

@Entity
public class Department {

    @Id
    private int id;

    private String name;

    @OneToMany(mappedBy = "department", fetch = jakarta.persistence.FetchType.EAGER)
    private List<Employee> employees;

    // Getter এবং Setter
}

উপরের উদাহরণে, fetch = FetchType.EAGER এর মাধ্যমে employees তালিকা Eager Loading হিসাবে কনফিগার করা হয়েছে। এর অর্থ, Department অবজেক্ট লোড করার সময়ই সমস্ত employees ডাটা লোড হবে।


@ManyToOne Mapping এ ব্যবহার

Lazy Loading:

@ManyToOne(fetch = jakarta.persistence.FetchType.LAZY)
private Department department;

Eager Loading:

@ManyToOne(fetch = jakarta.persistence.FetchType.EAGER)
private Department department;

Default Behavior

  • Hibernate বা JPA-তে @OneToMany এবং @ManyToMany এর ডিফল্ট ফেচ মোড হল Lazy Loading
  • @ManyToOne এবং @OneToOne এর ডিফল্ট ফেচ মোড হল Eager Loading

ডিফল্ট ফেচ মোড পরিবর্তন করার জন্য fetch প্যারামিটার ব্যবহার করতে হয়।


Lazy এবং Eager Loading এর ব্যবহার ক্ষেত্র

Lazy Loading

  • যেখানে সমস্ত ডেটা একসঙ্গে প্রয়োজন হয় না।
  • বড় ডেটাসেটের ক্ষেত্রে মেমরি ব্যবহারের দক্ষতা বাড়ানোর জন্য।

Eager Loading

  • যেখানে সম্পর্কিত ডেটা আগে থেকেই প্রয়োজন।
  • ছোট ডেটাসেট বা রিয়েল-টাইম অ্যাপ্লিকেশনে।

পারফরম্যান্স টিউনিং এর টিপস

  • Lazy Loading ব্যবহার করুন বড় ডেটাসেটের ক্ষেত্রে।
  • Eager Loading ব্যবহার করুন, যখন সম্পর্কিত ডেটা সবসময়ই প্রয়োজন।
  • Spring ORM এবং Hibernate-এ JOIN FETCH বা EntityGraph ব্যবহার করে কাস্টম লোডিং কনফিগার করুন।
  • N+1 প্রোবলেম এড়ানোর জন্য প্রয়োজনীয় ক্ষেত্রে Hibernate.initialize() মেথড ব্যবহার করুন।

Spring ORM এ Lazy এবং Eager Loading কনফিগারেশন ডাটা লোডিং কৌশলকে নিয়ন্ত্রণ করতে সাহায্য করে, যা অ্যাপ্লিকেশনের কার্যকারিতা এবং মেমরি ব্যবহারের দক্ষতাকে উন্নত করে।

Content added By
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion